Skip to content

系统函数

是将函数封装入库,供用户使用的一种方式。方法是把一些常用到的函数编完放到一个文件里,供不同的人进行调用。
像 cin 跟 cout 属于我们一直使用的系统函数

cmath 中常用函数

  • pow
  • log10
  • sqrt
  • abs
  • labs
  • fabs
  • ceil
  • floor

pow

pow(a,b)

指数运算,得到 a 的 b 次方,ab

pow 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    cout << "2的3次方:" << pow(2,3) << endl;
    return 0;
}

运行结果:

c
2的3次方:8

log10

log10(x)

计算以 10 为底的双精度实数 x 的对数。

log10 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    double x = 100;
    cout << "log10(x) = " << log10(x) << endl;
    return 0;
}

运行结果:

c
log10(x) = 2

分析

因为 10 的 2 次方是 100,所以这里的答案是 2。

sqrt

sqrt(a)

开根运算,得到 a 开 2 次根的值。也可以用pow(a,0.5)的方式来实现开根运算。

sqrt 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    cout << "9开根的值:" << sqrt(9) << endl;
    return 0;
}

运行结果:

c
9开根的值:3

abs

abs(number)

计算整数 number 的绝对值

abs 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int number = -100;
    cout << "number的绝对值是:" << abs(number) << endl;
    return 0;
}

运行结果:

c
number的绝对值是:100

labs

labs(number)

计算长整数 number 的绝对值

labs 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    long number = -15;
    cout << "number的绝对值是:" << labs(number) << endl;
    return 0;
}

运行结果:

c
number的绝对值是:15

fabs

fabs(number)

计算双精度实数 number 的绝对值

fabs 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    double number = -15.674;
    cout << "number的绝对值是:" << fabs(number) << endl;
    return 0;
}

运行结果:

c
number的绝对值是:15.674

ceil

ceil(x)

计算不小于双精度实数 x 的最小整数

ceil 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    double x = 3.6;
    cout << "ceil(x) = " << ceil(x) << endl;
    return 0;
}

运行结果:

c
ceil(x) = 4

分析

可以理解为给数字 x 进行向上取整。

floor

floor(x)

计算不大于双精度实数 x 的最小整数

floor 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    double x = 3.6;
    cout << "floor(x) = " << floor(x) << endl;
    return 0;
}

运行结果:

c
floor(x) = 3

分析

可以理解为给数字 x 进行向下取整。

其它常用函数

  • sizeof
  • memset
  • malloc
  • free

sizeof

sizeof(x)

得到变量 x 的内存大小。

sizeof 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a = 1;
    double b = 1.2;
    char c = &apos;a&apos;;
    string d = "abc";
    cout << sizeof(a) << endl;
    cout << sizeof(b) << endl;
    cout << sizeof(c) << endl;
    cout << sizeof(d) << endl;
    return 0;
}

分析

不同的变量占据的内存大小不一样。

memset

void *memset(void *s, int ch, size_t n)

memset(a,1,sizeof(int)*5)

批量设置从 a 开始,连续 5 个内存空间的值为 1。要注意的是,memset 是对字节进行操作,一般用来初始化字符型数组。

memset 示例代码
cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    char word[] = "apple";
    memset(word,&apos;a&apos;,5);
    for(char i: word)
        cout<<i<<endl;
    return 0;
}

分析

a 的值被重置为 5 个'a'。